Le package mapsf permet de réaliser des cartes statiques de très haute qualité. Il a en effet été mis au point par des cartographes et des géomaticiens professionnels de l’UMS RIATE. Il prend la suite du package cartography dont la maintenance demeurera assuré quelque temps encore mais ne fera plus l’objet de développements futurs. Le package mapsf présente l’avantage d’être totalement compatibvle avec le package sf ce qui n’était pas autant le cas pour le package cartography, plus ancien, et créé pour être compatible avec l’ancien package sp.
On trouvera la documentation du package mapsf à l’adresse suivante :
https://riatelab.github.io/mapsf/index.html
Création d’un template cartographique
Nous allons dans un premier temps apprendre à créer un fonds de carte vierge mais comportant tout l’habillage nécessaire (“template”). Pour cela nous allons charger différentes couches cartographiques correspondant respectivement aux communes, aux arrondissements et aux iris :
La fonction mf_map() avec le paramètre type = "base"permet de tracer une carte vide
Code
mf_map(map_iris, type ="base")
Superposition de couches
On peut toutefois ajouter toute une série de paramètres supplémentaire (col=, border=, lwd=, …) et superposer plusieurs fonds de carte avec le paramètre add = TRUE. L’ajout de la fonction layout permet de rajouter un cadre une légende.
programme
Code
# Trace les Iris avec des paramètresmf_map(map_iris, type ="base", col ="lightyellow", border="gray50",lwd=0.3)# Ajoute les contours des arrondissementsmf_map(map_arr, type ="base", col =NA,border="red",lwd=0.5,add =TRUE)# Ajoute les contours des départementmf_map(map_com, type ="base", col =NA,border="red",lwd=1,add =TRUE)# Ajoute un cadre, un titre et des sourcesmf_layout(title ="Marseille", credits ="Sources : IGN et INSEE")
Ajout d’un thème
On peut finalement modifier l’ensemble de la carte en lui ajoutant une instruction mf_theme() qui peut reprendre des styles existants ( “default”, “brutal”, “ink”, “dark”, “agolalight”, “candy”, “darkula”, “iceberg”, “green”, “nevermind”, “jsk”, “barcelona”) mais aussi créer ses propres thèmes
programme
Code
#Choix du thèmemf_theme("darkula")# Trace les Iris avec des paramètresmf_map(map_iris, type ="base",border="white",lwd=0.3)# Ajoute les contours des arrondissementsmf_map(map_arr, type ="base", col =NA, lwd=1,add =TRUE)# Ajoute les contours des communesmf_map(map_com, type ="base", col =NA, lwd=2,add =TRUE)# Ajoute un cadre, un titre et des sourcesmf_layout(title ="Marseille", credits ="Sources : IGN et INSEE")
Ajout de texte
On peut ajouter une couche de texte avec la fonction mf_label(). Par exemple, on va ajouter à la carte précédente le code insee des communes
résultat
Code
mf_theme("agolalight")# Trace les Iris avec des paramètresmf_map(map_iris, type ="base", col ="lightyellow",border="gray80",lwd=0.3)# Ajoute les contours des arrondissementsmf_map(map_arr, type ="base", col =NA,border="red",lwd=1,add =TRUE)# Ajoute les contours des communesmf_map(map_com, type ="base", col =NA,border="red",lwd=2,add =TRUE)# Ajoute les codes des arrondissementsmap_arr$num<-substr(map_arr$NOM_COM,10,13)mf_label(map_arr, var="num",cex=0.7, col="blue",overlap =FALSE)# Ajoute un cadre, un titre et des sourcesmf_layout(title ="Arrondissements et Iris de Marseille en 2020", frame =TRUE,credits ="Sources : IGN et INSEE")
Carte de stock
Une carte de stock représente la localisation de quantités que l’on peut aditionner et dont le total a un sens. Par exemple un nombre d’habitants, un nombre de ménages, un nombre d’automobiles. Ce quantités doivent être représentées par des figures (cercles, carrés, …) dont la surface est proportionelle au stock afin que l’oeil du lecteur puisse les aditionner visuellement.
Dans le package mapsf, on réalise ce type de carte à l’aide de la fonction mf_map()en lui donnant le paramètre type="prop".
On va tenter à titre d’exemple de représenter la distribution du nombre de ménages ordinaires occupant un logement HLM par IRIS :
Carte de stock minimale
Code
# Trace les contours des communesmf_map(x= map_iris, type ="base")# Ajoute le nombre de ménages par IRISmf_map(x =map_iris_hlm, type ="prop",var ="HLM_1",add=TRUE)
Mais le résultat est peu satisfaisant car les cercles sont trop grands. Il faut en pratique toujours effectuer un réglage de ceux-ci avec l’instruction inches=
Carte de stock habillée
Code
mf_theme("agolalight")mf_map(map_iris, type ="base", col ="lightyellow",border="gray80", lwd=0.3)mf_map(map_arr, type ="base", col =NA,border="black",lwd=1,add =TRUE)mf_map(map_iris_hlm, var ="HLM_1",type ="prop",inches =0.05, col ="red",leg_pos ="left", leg_title ="Nombre de ménages", add=TRUE)mf_layout(title ="Distribution des logements HLM en 2020", frame =TRUE,credits ="Sources : IGN et INSEE")
Carte choroplèthe
Une carte choroplèthe ou d’intensité représente un phénomène relatif dont la somme n’a pas de sens. Par exemple, il serait absurde d’aditionner les % de logement HLM des IRIS du Val de Marne. Ces variables d’intensité caractèrisent donc l’état général d’une zone (choros) et elles vont être représentées par une couleur appliquée à toute la surface de la zone, d’où leur nom de cartes choroplèthes.
La fonction du package mapsf adaptée aux variables d’intensité est la fonction mf_map()munie du paramètre type = "choro".
On va prendre l’exemple de la part des ménages qui résident en HLM
Carte choroplèthe minimale
Si on ne précise rien, la carte est réalisée à l’aide de la palette par défaut avec un découpage des classes en quantiles (effectifs égaux).
programme
Code
# Carte choroplèthemf_map(x = map_iris_hlm, var ="HLM_pct",type ="choro")
Carte choroplèthe habillée
On peut arriver à une carte beaucoup plus satisfaisante en contrôlant l’ensemble des paramètres de couleur et de découpage des classes. Puis en superposant les contours de communes au dessus de la carte des IRIS pour faciliter le repérage.
programme
Code
mybreaks =c(0, 10,20,30,40,50,60,70,80,90, 100)mypal <-mf_get_pal(n =10, pal ="Reds",rev = T)# Carte choroplèthe des irismf_map( map_iris_hlm, var ="HLM_pct",type ="choro",breaks = mybreaks,pal = mypal, border=NA,col_na ="gray80",leg_title ="% HLM",leg_val_rnd =0)# Contour des arrondissements et cadremf_map(map_arr, type ="base", col =NA,border="black",lwd=1,add =TRUE)mf_layout(title ="% de ménages en HLM au RP 2020", frame =TRUE,credits ="Sources : IGN et INSEE")
Carte stock + choroplèthe (1)
On peut combiner les deux modes cartographiques par superposition :
Carte stock + choroplèthe
Mais les cercles dissimuent alors les plages de couleur, aussi on peut utiliser le type prop_choro qui place la variable choroplèthe à l’intérieur des cercles
Code
mf_theme("agolalight")mybreaks =c(0, 10,20,30,40,50,60,70,80,90, 100)mypal <-mf_get_pal(n =10, pal ="Reds", rev=T)mf_map(map_iris_hlm, type ="base", col ="gray80",border="white", lwd=0.3)mf_map(map_arr, type ="base", col =NA,border="white",lwd=1,add =TRUE)mf_prop_choro( x = map_iris_hlm, var =c("TOT", "HLM_pct"), inches =0.06, col_na ="grey", pal=mypal,breaks = mybreaks, nbreaks =4, lwd =0.1,leg_pos =c("right", "left"),leg_val_rnd =c(0,0),leg_title =c("nb. ménages", "% HLM"),add =TRUE)mf_layout(title ="Les ménages ordinaires en HLM 2020", frame =TRUE, credits ="Sources : IGN et INSEE")